Application programs {software} run on hardware.
Where inventory piles up indicates where processes slow down {bottleneck, process}. To remove bottlenecks, use smaller batches, decrease flow rate, improve efficiency and productivity there, increase people or tools there, build an alternate pathway, and/or modify process to eliminate bottleneck. Typical design weaknesses include confusing hierarchy of screens, incomplete instructions or information, poor screen design and layout, and/or unjustified assumptions about user knowledge.
Contextual design {contextual design} finds what customers need and do and how the organization develops, checks, and sells its products, using focus groups, protocol capture, and prototyping.
Contextual design diagrams the roles of people and things in processes: Information and materials flow among people and objects. People assume information, have organizational relationships, and interaction types. Whole organization and its subgroups perform tasks. Physical objects have assigned descriptions and locations.
Organization users have goals, requirements to reach goals, and bases for satisfactory goal completion. Users have inputs with sources, processes, and outputs with destinations. Users have physical, business, and information contexts. Users have information, skills, and mental models, and talk to themselves while doing tasks.
Customers use products in specific ways, have needs and priorities, and have specific interactions with organization objects, information, and people.
Information and material flows, people relationships, people tasks, and physical objects have relations and fall into groups by time, space, task, flow, or culture.
People have roles, and objects are parts of processes, and role-and-process groups model the whole organization.
Contextual design fits changes and new roles and processes into the organization model at the appropriate location to improve functions but minimize how much people must learn.
Programmers can observe 6 to 8 users {focus group} to see how they solve a problem using software. Focus groups help find the basis of problems, not just symptoms and solutions.
small-scale studies {pilot study}.
Programmers can find the protocol {protocol capture} an average user and/or an expert uses to do a (complex) process, before building software or with built software. Story boards can show processes.
Programmers can roughly design papers or screens {prototyping} for a problem, to test and modify quickly, to build user interfaces.
Events {trigger, event} can cause users to begin searches or other actions.
Usability {usability} involves information, objects, and results. People and computers use data, object and part definitions, and instructions about procedures. Objects receive information from an object, transform received information into new sendable information, or send information to another object, and all three steps are a work task. Results are goals of a person, achievable by processing information in the system and the user.
Work flows have bottlenecks, where processes slow and inventory piles up. Businesses concentrate resources on improving bottlenecks, typically user interface (UI) design of tools and menus. Tasks must be relevant to goals and relatively easy to perform and understand.
Work items are analyzed for relevance, speed and ease of search and transfer, ease of understanding, and possibilities of mistakes. Users perform relevant tasks with more attention and good will. Understanding is better if all terms defined, steps read easily, necessary preconditions noted, branches noted, procedure accurate and tested, and steps presented one at a time. Speed is better if fewer steps, less data, fewer branches, fewer decisions, and fewer clicks.
Businesses typically reallocate work items from human objects to inanimate objects to reduce information burdens on users. Systems can guide users to information by directed search, using context-sensitive help and dialog-box help. Systems display only the most needed information. Distinctive locators include pop-up help, labels, and grouped menu items and interface objects. Wizards and coaches present a defined way of working.
usability testing
Test usability on typical user tasks by focus groups and protocol capture. Identify users' goals, current knowledge, and steps of learning to use product. Qualify users as new or existing and by knowledge level. Measure task times, successes, and errors, and user fatigue, confusion, frustration, and satisfaction.
Usability engineering {usability engineering} solves usability problems. Work flows have bottlenecks, where processes slow and inventory piles up. Usability engineering concentrates resources on improving bottlenecks, typically user interface (UI) design of tools and menus. Tasks must be relevant to goals and relatively easy to perform and understand. Work items are analyzed for relevance, speed and ease of search and transfer, ease of understanding, and possibilities of mistakes. Users perform relevant tasks with more attention and good will. Understanding is better if all terms defined, steps read easily, necessary preconditions noted, branches noted, procedure accurate and tested, and steps presented one at a time. Speed is better if fewer steps, less data, fewer branches, fewer decisions, and fewer clicks. Usability engineering typically reallocates work items from human objects to inanimate objects to reduce information burdens on users. Systems can guide users to information by directed search, using context-sensitive help and dialog-box help. Systems display only the most needed information. Distinctive locators include pop-up help, labels, and grouped menu items and interface objects. Wizards and coaches present a defined way of working.
Users have a work flow {work flow} they follow and a mental model of what they are supposed to do (goals) and how they do it (protocol). Users have skills and experience that contribute to performance. Users have a work environment that constrains their performance.
Storing or transmitting information can use coded symbols {coding, computer} {encoding, computer} {decoding}.
types
Codes can use binary numbers, decimal numbers, words, images, and switches. Code size depends on possible-symbol number and probability.
probability
Symbols can have equal or unequal probability. Binary code use symbols 0 and 1, with equal probability. Probability is base-2 logarithm: P = - log(2^1) = 1/2 for one position. Information {average unexpectedness} is greatest if all symbols are equally probable.
information
Information measurement uses binary units. For binary code, with two equal-probability symbols, information in one position is 1 bit, 2^1 = 2. Information in three positions is 3 bits, 2^3 = 8, with eight possible series, such as 010.
Machines store and transmit data in record sets {block, data}| containing 2000, 4000, or 8000 bytes in fixed-length or variable-length blocks. Longer data blocks have fewer recombinations and can process faster.
Message or information packets {packet, information} {information packet} {message, information} are only for recipients that can decode them, using same methods as for encoding. Communication requires similarities between senders and receivers. Messages must have marks to show that they are messages. Messages reflect coding method.
If several inputs or outputs are waiting for transmission, CPU sends blocks in the most-efficient way {message switching} {block switching}.
Binary messages can split into sections and recombine many times, using methods {Data Encryption Standard} (DES) encoded in 56-bit keys. Methods can use three different keys {triple DES}.
Data can separate into small chunks, travel in pieces through different channels, and then reassemble {multiplexing, data}|.
Message can split into parts that take alternate routes and then recombine at delivery {packet switching}|. In modems, packets are strings of 8-bit bytes, each with start and stop bit.
Decimal-number input can convert to binary numbers {packing, data} {data, packing}. Binary numbers can convert to decimal-number output {unpacking}.
Data can travel on carrier frequencies by AM or FM, or data can be in pulses {ultrawideband}| (UWB).
Codes {ANSI code} can use 7, 8, or 9 bits to represent 128 or 256 printable and unprintable characters and symbols. ANSI is similar to ASCII.
Codes {ASCII code} can use 7, 8, or 9 bits to represent 128 or 256 printable and unprintable characters and symbols.
Memory locations or switches can have two states {binary code}: 0 or 1, on or off, zero voltage or unit voltage.
0 is impulse-pause, 1 is pause-impulse, and start or stop is impulse-impulse {Manchester encoding}. Start-bit impulse interval sets transmission rate, so transmission rates can vary.
Data is in bits that make bytes that make words that make records that make files that make directories {data hierarchy}.
Bit sets {byte}| can hold one binary-coded character or symbol, such as letters, numbers, and punctuation marks. Eight-bit bytes can code 2^8 = 256 different symbols. Bytes can have 8, 16, 32, or 64 bits. Eight-bit bytes can have two four-bit parts {nibble}. Nibbles code numbers from 0 to 15 in hexadecimal.
Byte sets {word, data}| can hold values or instructions. Word length can be constant, for more speed. Word length can be variable, for more flexibility and memory space. Words can have extra bits {tag bit} {word tag} to indicate data, code, control instruction, descriptor, date, or read-only. Words can have extra bits {correction bit} for error correction. Error-checking codes correct one-bit errors automatically and flag two-bit errors for automatic repeat.
Sets {field, record} of one or more words can hold strings or numbers. Fields can hold phrases, sentences, and instructions {data element}.
In files, field sets {record, data}| can hold data lines. Records typically have 80, 256, 2048, or 4096 bytes. Records have addresses. Records can have next-record address {pointer}. Using pointers, record series {thread} can link. Records {multi-threaded element} can be in more than one logical file.
Records can have pointers to next-record address, linking records {list, computing}. Records can have indexes. List elements can point to positions in address table {inverted list}. Last list record can point to first record {closed list} {ring, record}. Records can have pointers in both directions. Hierarchies and networks have related data elements. Memories can be lists, with nodes and node links.
Tables or record arrays {file, computing}| can store programs and/or data values. Files are record sets {data collection}.
parts
Files have initial information {file header, file} and end markers {end-of-file marker} (EOF).
file operations
Sort file lines in alphabetical, numerical, or other order. Compare files line-by-line, for differences or similarities. Delete (Remove) file from directory. Save file in directory. Copy saved file to another directory or to same directory with new name. Rename file.
reading
Computers can read files bit by bit in sequence from start to finish {serial file} or at any point {random access file}. Files can have no index {direct file}, sequential index {index sequential file}, or random index {index random file}.
database
Computer files {master file} can hold reference data or database. Files {transaction file} can contain new or temporary data to update master file.
output
Files {output file} can result from processing.
Computers open and close files to read or write data {file, access}. Reading and writing can be from and to text files in linear order {sequential access}, such as appending to files. After opening sequential-access files for writing output or appending data, computers must close files before opening files for reading input. Reading and writing can be from and to records {random access}, which have addresses, such as in databases. After opening random-access files, computers can write to files and then read record without closing files first. Reading and writing can be from and to bitmaps {binary access}, which have byte positions. After opening binary-access files, computers can write to files and then read record without closing files first.
Named file groups {directory, computer}| form hierarchies from root directory to leaf directories. List or show directory files by alphabetical order, date saved or last used, or size. Display current directory name. Change to another directory. Make directory in higher directory. Remove directory from higher directory.
Text files {Comma-Separated Value file} (CSV) can contain record lists, with record values separated by commas. Values are in quotes. Records end with newline character.
Microsoft(R) Word, WordPerfect (TM), and similar word-processing programs save documents as binary files {DOC file} with DOC extension. Word-processing programs can convert DOC-file formats. In Microsoft Word, files can have Table of Contents (TOC) and Index, as well as links, fields, and hidden text.
contents
Heading paragraph styles determine TOC paragraph styles and indentation levels. TOC page numbers link to headings.
index
Text can have index fields, which you can hide or show. In Microsoft Word, field has format: special-left-brace_space_XE_space_phrase_space_special-right-brace. To search for fields, use ^d. To insert fields, use Ctrl-F9 or Insert menu and Field command. Page numbers in Index are not links.
Adobe Framemaker (TM) word-processing program uses a proprietary document format {Framemaker file} with extension FM. You can import files from other formats and export Framemaker files to other formats. Other applications typically cannot open Framemaker files. Adobe Acrobat (TM) can open Framemaker files.
Hypertext Markup Language (HTML) is an example of Standard Generalized Markup Language (SGML). Such files (SGML file) {HTML file} are text files.
tags
HTML uses tags to open and close formatting. Tags can be in any order or relation. Tags start with less-than signs and close with greater-than signs.
semantics
HTML has no semantics.
comment
<!-- comment --> inserts comment.
format
HTML files have a document-type line first, heading section second, and body section last.
document type line
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> starts HTML files.
beginning and ending lines
<HTML LANG="en-US"> is after the document-type line. </HTML> is at file end.
heading block
<HEAD> is after <HTML>, to start heading block.
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8"> names content type for search engines.
<META HTTP-EQUIV="Expires" CONTENT="0"> expires page for search engines.
<TITLE>Title</TITLE> inserts title.
<META HTTP-EQUIV="keywords" CONTENT="keyword1, ..., keyword25"> or <META NAME="keywords" CONTENT="keyword1, ..., keyword25"> specifies up to 25 keywords for search engines.
<META NAME="description" CONTENT="25-word description"> describes HTML pages for search engines, using up to 25 words.
<META NAME="robots" CONTENT="noindex"> excludes indexing by search engines. <META NAME="robots" CONTENT="nofollow"> excludes searching for links by search engines. <META NAME="robots" CONTENT="noindex, nofollow"> excludes indexing by search engines and searching for links by search engines.
<STYLE TYPE="text/css"> starts the list of style attributes. HTML styles include: P, H1, H2, H3, H4, H5, H6, H7, A, and LI. P is paragraph. H1 through H7 are headings. A is anchor for name, id, and references. LI is list element. HTML styles, such as "color: blue" are in braces. text-align: center; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px; font-weight: bold; font-style: italic; color: red; text-decoration: none; are examples.
<LINK HREF="stylesheet.css" REL="stylesheet" TYPE="text/css"> points to a style sheet.
</STYLE> ends the list.
HTML can use CGI to add programs. <SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript" SRC="path/file.js"></SCRIPT> specifies Java script to run program. <IMG ALT="Counter" SRC="/cgi-bin/counter.pl"> specifies Counter image. <A HREF="http://.../cgi-bin/guestbook.cgi">View My Guestbook</A> uses guestbook.
</HEAD> ends heading block.
body beginning and ending
After heading block, <BODY> starts body block. <BODY STYLE="background-image: url(path/file_name.gif); background-repeat: no-repeat;"> uses the STYLE attribute to specify parameters. At line before </HTML>, </BODY> ends BODY block.
paragraph, heading, and section
<P>...</P> is for paragraph, which has blank lines before and after.
<BR> is for line feed.
<H1>...</H1> is for heading 1. Headings 2 through 7 are similar.
<DIV>...</DIV> is for text section or page division, with blank lines before and after.
<SPAN>...</SPAN> is for paragraph phrase.
<OL> <LI>...</LI> </OL> is for list.
style tag and attribute
<P STYLE="text-align: center; font-family: Verdana, Arial, Helvetica, sans-serif; font-weight: bold; font-size: 12px; font-style: italic; color: red; text-decoration: none;"> specifies parameters.
For font-family, use fonts found on all browsers, such as Courier, Times, Arial, or Helvetica. font-family:sans-serif includes Verdana, Arial, and Helvetica. font-family:serif includes Times and Courier.
For font-size, use font-size:larger, font-size:smaller, or font-size:normal.
For font-weight, use font-weight:bold or font-weight:normal.
For font-style, use font-style:italic or font-style:normal.
For color, use hexadecimal string, such as color:FFFFFF for black and color:000000 for white, or use color name, such as color:blue, color:red, or color:green.
For text-decoration, use text-decoration:none to remove underlines from links.
table
<TABLE BORDER="0" WIDTH="640" CELLPADDING="0" CELLSPACING="0" > starts table, with border, width, and cell size. WIDTH="100%" uses percent. <TR>...</TR> is for table row. <TD COLSPAN="3" WIDTH="100%" ALIGN="left" VALIGN="middle">...</TD> is for table-row detail, such as column entry or line, with column span, width, horizontal alignment, and vertical alignment. </TABLE> ends table.
image
<IMG SRC="/x/x/xxx.gif" WIDTH="15" HEIGHT="10" HSPACE="0" VSPACE="0"> is for image, with source file, width, height, horizontal spacing, and vertical spacing.
jumping
<A HREF="#Glossary">Glossary</A> jumps to same-file position marked by <A NAME="Glossary"></A>. If there is no marked position, program searches for first occurrence in file.
anchor and linking
<A HREF="path/file_name">link_name</A> is for linking to a file or URI by clicking on the link name. <A HREF="path/file_name#ID">link_name</A> is for linking to a file or URI and jumping to the ID in the file. <A HREF="path/file_name.jpg" TARGET="_blank">image</A> opens a new window. <A HREF="http://x/x/xxx.pdf" NAME="x" ONMOUSEOVER="ft(this)"></A> shows something when cursor mouses over text.
URI Escape Characters
Use % for Unicode (and ISO-Latin) hexadecimal numbers. Always encode the following URI characters. space = %20. double quotation mark = %22. # = %23. % = %25. < = %3C. > = %3E. [ = %5B. backslash = %5C. ] = %5D. ^ = %5E. ` = %60 = opening single quote. { = %7B. | = %7C. } = %7D. ~ = %7E. Period, apostrophe, and hyphen are OK. Do not use parentheses, underscore, exclamation mark, or asterisk.
URI reserved characters define syntax. If used in URIs, encode them. $ = %24. & = %26. + = %2B. , = %2C. / = %2F. : = %3A. ; = %3B. = = %3D. ? = %3F. @ = %40.
characters
Unicode (and ISO-Latin) characters 0 to 31 and 127 are ASCII control characters and do not print. tab = 9. carriage return = 13.
HTML recognizes the following Unicode, ASCII, and ANSI characters: blank ! double quotation mark # $ % ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; = ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ backslash ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z right brace left brace | ~ ¢ £ ± µ.
HTML Escape Characters
For other characters or for escaping characters, use NNN; for Unicode (and ISO-Latin) decimal numbers or &...; for alphabetic. 000 to 031 have no printing characters. 009 = tab. 013 = carriage return.
032 = sp = blank = space. 033 = excl = !. 034 = quot = double quotation mark. 035 = num = #. 036 = dollar = $. 037 = percnt = %. 038 = amp = & (ampersand). 039 = apos = ' = apostrophe = closing single quote. 040 = lpar = (. 041 = rpar = ). 042 = ast = *. 043 = plus = +. 044 = comma = ,. 045 = hyphen = dash = -. 046 = period = . 047 = sol = / (solidus). 048 to 057 are digits 0 to 9. 058 = colon = :. 059 = semi = ;. 060 = lt = <. 061 = equals = =. 062 = gt = >. 063 = quest = ?. 064 = commat = @.
065 to 090 are letters A to Z.
091 = lsqb = [. 092 = bsol = backslash. 093 = rsqb = ]. 094 = caret = ^. 095 = lowbar = _. 096 = ` (accent grave).
097 to 122 are letters a to z.
123 = lcub = left brace = left curly bracket. 124 = verbar = |. 125 = rcub = right brace = right curly bracket. 126 = tilde = sim = ~. 127 is for Delete.
ISO-Latin characters 128 to 255 are not in the ASCII set and may not print.
Unicode does not use ANSI 128 to 159.
Unicode and ANSI control characters
000 = NUL (Null character). 001 = SOH (Start of Header). 002 = STX (Start of Text). 003 = ETX (End of Text). 004 = EOT (End of Transmission). 005 = ENQ (Enquiry). 006 = ACK (Acknowledgment). 007 = BEL (Bell). 008 = BS (Backspace). 009 = HT (Horizontal Tab). 010 = LF (Line Feed). 011 = VT (Vertical Tab). 012 = FF (Form Feed). 013 = CR (Carriage Return). 014 = SO (Shift Out). 015 = SI (Shift In). 016 = DLE (Data Link Escape). 017 = DC1 (XON)(Device Control 1). 018 = DC2 (Device Control 2). 019 = DC3 (XOFF or Device Control 3). 020 = DC4 (Device Control 4). 021 = NAK (Negative Acknowledgement). 022 = SYN (Synchronous Idle). 023 = ETB (End of Transmission Block). 024 = CAN (Cancel). 025 = EM (End of Medium). 026 = SUB (Substitute). 027 = ESC (Escape). 028 = FS (File Separator). 029 = GS (Group Separator). 030 = RS (Request to Send or Record Separator). 031 = US (Unit Separator).
Portable Document Format {PDF file} depends on a format {PostScript} (PS file) from Adobe Systems. PDF files can be unstructured, structured, or tagged, with increasing file-structure information, such as bookmarks, pages, tables, lists, and images. The freely downloadable Adobe Reader application reads PDF files. Adobe Acrobat and Adobe Distiller make PDF files.
Standard Generalized Markup Language {SGML file} defines electronic-document structure and content. Structured documents allow searching and semantics.
Extensible Markup Language {XML file} is a Standard Generalized Markup Language (SGML).
tags
XML uses text blocks begun and ended by tags. Tags can have attributes, which can have values. Well-formed documents conform to XML language.
document type
Document Type Definition (DTD) defines document structure using tag tree. Valid documents conform to a DTD.
types
XML Linking Language (XLL) has link semantics, extended links to other documents, pointers to document parts, and links in both directions. XML Stylesheet Language (XSL) tells how to parse XML documents. Simple API for XML (SAX) allows programming, using tag-sequence events. Document Object Model (DOM) allows programming, using API-object tag trees.
languages
XML languages include Chemical Markup Language (CML), MathML, Bioinformatic Sequence MArkup Language (BSML), Biopolymer MArkup Language (BioML), GAME for Drosophila sequence information, and BlastXML for search output.
data
Modeling, storing, and querying data needs data structure. Data often grows exponentially, has complex relationships, has new data types generated from old data, has new relation types, needs archiving, has many objects with much data, has updates, and has users with different needs, skills, and tools. XML schema adds object-oriented relational database concepts. XML can be for Web interfacing among object-oriented relational databases. Only object-oriented approaches can model data. Object-oriented relational database management systems (OODBMS) have query languages, many relation types, constraints, symmetry, data clustering, many data types, tables, triggers, indexing, inheritance, security, access, methods, and objects. Relation can be not-null, unique, test, and one-of.
Databases have formatted records that allow indexing and searching. Databases {relational database} can have different-format records and relations among formats.
tables
Relational databases store data in two-dimensional tables. For example, table can be about people in a group. Rows are about one object or event, such as person. Columns are fields, properties, classes, or data categories, such as person names and weights.
tables: columns
Columns have value formats. Column values can be numbers, character strings, bitmaps, times, dates, or monetary amounts. Column values can have fixed or variable number of characters. Columns can be empty or require values. Column values can be unique or the same. Column values can be another-column values. Column values can be any sequence value, such as 1 to n.
tables: key column
Tables typically have main column {primary key}. For example, in Person table, primary key is person name or ID. Several columns can link to make primary key.
tables: index
Columns can have indexes. Indexes assign table-row number to column value. Columns can require that each value occur only once or allow values to repeat. For example, person names occur only once, but the same weight can apply to several people. It takes time to make indexes, but indexing speeds searches. Indexing is more efficient if table updates are infrequent.
tables: relations
Two tables cross-reference each other, if they both have same column. For example, Person table can have PersonID column and WeightCategory column. Weight table can have WeightCategory column and WeightAmount category. Both tables share WeightCategory column. Database queries that use both tables can yield WeightAmount for PersonID. WeightCategory column in weight table is reference {foreign key} for WeightCategory column in Person table. Database can allow only weight categories listed in weight table to be values for WeightCategory column in Person table.
trigger
Inserting, deleting, or updating table values can cause {trigger, database} actions on database tables. For example, if Person table lists all people and their groups and if group table lists group members, adding person and his or her group to Person table can automatically add person to Group table.
normal forms
Theory governs table structure in relational databases. Five principles {normal form, database} improve performance speeds and prevent update problems, data redundancies, and data inconsistencies. Tables and records typically have normal forms {normalization, database}, unless performance considerations require non-normalization.
normal forms: First Normal Form
Table records have same number of non-repeating fields. For example, people in Person table have names, weights, and heights, even if some people have no known height values.
normal forms: Second Normal Form
Tables have one primary key. In Person table, name field is primary key, because it identifies person uniquely. Other fields state facts about primary key, such as weight and height, and are not unique.
normal forms: Third Normal Form
Columns are independent of other columns. There is only one column about each property. For example, in Person table, there are not two columns about weight, one for kilograms and one for pounds, or one for weight numbers and one for weight categories. For weights, there can be a Weight table. Non-key fields cannot be subsets of, or have another relation to, primary keys. For example, Person table has name column and does not have nickname column. For nicknames, there can be a nickname table.
normal forms: Fourth Normal Form
Row and column cells have one value, not multiple values. In Person table, name column has only best name, not alternative names, and language column has only preferred language, not all languages spoken. For nicknames, there can be a nickname table. For languages, there can be a language table. In Person table, each column is only about one property, not multiple properties. For example, Person table does not have a name-language column. For names and languages, there can be a language table.
normal forms: Fifth Normal Form
If two columns relate, and relation does not have direction {symmetric constraint}, use several tables with as few fields as possible, rather than fewer tables with more fields. For example, to relate person, weight amount, and weight category, Person table has name and weight category columns, and weight table has weight amount and weight category. Person table does not have person, weight amount, and weight category columns. For asymmetric constraints, database must have two tables.
tablespace
Single files {tablespace} can store related tables. Tablespaces represent shared columns only once, so memory size and computer processes decrease and processing speed increases.
Tablespace tables {cluster} {data cluster} can share columns. Clusters place related information in one physical location and allow overlapping indexes. Clustering works well for adding data to tables but is not good for tables that have many deletions or updates.
For tables, cell values in any column or row can become columns or rows {pivoting}|. The new table shows a different perspective on data, along a new dimension. Pivoting can correlate two table variables.
empty cells
Cells can be empty (NULL). Pivoting treats NULL the same as other cell values. Pivoting can make fewer cells and so fewer NULL cells.
example
Table has Days columns D1, D2, ... and Persons rows P1, P2, ... Table cells have Locations L1, L2, ..., with L1 in D1-P1 cell, and so on. See Figure 1. You can pivot table to make table with Days columns, Locations rows, and Persons in cells. See Figure 2. Cells fill by rule: Days and Locations have Persons. You can always pivot new table back to old table.
data rows
You can pivot table on one column to put another column in cells. For example, table can have Day, Location, People, Thing, and Amount columns. Row records are Days, Places, People, Things, and Amounts combinations. You can pivot on Day column and rows, to put Amount in cells. Now table rows are Thing, People, and Place combinations, and columns are Day values listed in original-table cells. Cell Amount matches Day, Place, People, and Thing. If new table has same or greater cell number as original table, you can pivot back to original table.
Databases need security {security policy}: database roles (USER and ADMINISTRATOR), role system privileges for each application, role object privileges for each application, users, and row-level security.
Application Security creates roles and grants them privileges for one application. Roles and privileges for other applications should not affect the application. Users should not be able to alter roles and privileges inside or outside of the application. Application security must include SQL*Plus, SQL*Loader, and all other such available applications which might allow unrestricted SQL statement execution.
Application Context sets up session-based attributes. Each user has attributes, such as a user name, a role, an application, tables and views authorized to access, and other information which can be used to determine context. The context is used to determine what is accessed in the session.
Access Control allows row-based security for tables and views using Oracle functions attached to the table or view which is the basis of an application. When a user enters a SELECT, INSERT, UPDATE, or DELETE statement on the table or view, Oracle modifies the statement to include a WHERE clause which limits the data affected.
A schema is owned by a user. Schemas are accessible to other users when privileges are granted by the owner. The USER is the schema which contains all objects.
Database change or command use {event, computer} can trigger action {triggering, database}, such as displaying report or executing program.
Every time data changes, it can have higher identifying number {version number}. Databases can keep previous record versions {version control}.
Version branches {generation, data} start with generation 1. Generation and version combinations are unique.
Commands {command, computer} {executable command} execute actions, such as login, logout, show user name, or change password.
Commands {execute command} can save data to database, like Commit, and start background processing.
Commands {commit} can save data to database. Commit saves everything since previous Commit command, Rollback command, or application opening.
Commands {rollback} can discard all unsaved data and return to state at previous Commit command or application opening.
Commands can allow user into computer system {login}.
Commands can allow user to exit computer system {logout}.
Software parts {component, computer} can call other applications, products, or components.
Components {Application Programming Interface} (API) can share inputs and outputs.
Components {Database Management System} (DBMS) can store and retrieve database data.
Component architecture {Enterprise Java Beans} (EJB) can deploy object-oriented distributed enterprise-level applications. Applications using Enterprise Java Beans architecture are scalable, use transactions, and can have multiple users.
Users see window sets {Graphical User Interface} {user interface} (GUI) (UI), containing text fields, selection lists, check boxes, buttons, and other controls, in which to enter or view data and to issue commands.
Software components, applications, and products have subsets {module, software} {software module} that perform commands, actions, functions, or operations.
Computation can have constraints on users and data {security, computer} {computer security}.
A secure computing environment involves identifying a user at logon or when accessing services (authentication) and assigning privileges to directories and files to users or groups of users (authorization).
A security policy establishes administrative procedures for reacting to break-ins, backing up data, logging on, allowing user access, and setting appropriate security levels for hardware, software, application programs, and network services.
A security configuration for a computer involves the hardware, software, application programs, and network services and includes administrative procedures, physical security, installation, network access considerations, user training, and software security, such as user accounts, object permissions, auditing, and registry keys.
C2 Security Level
The National Computer Security Center (NCSC) of the United States performs software security evaluations for operating systems and publishes the results in a book entitled "Department of Defense Trusted Computer System Evaluation Criteria, " also known as the "Orange Book."
The C2 security level has the following main requirements:
The owner of a resource (such as a file or directory) must be able to control access to the resource.
The operating system must protect objects from unauthorized reuse by other processes. (As examples, freed memory contents cannot be read by another process, and data from deleted files cannot be accessed.)
To access the system, each user must enter a unique name and password. The system must be able to track all user activities using the unique identification.
System administrators must be able to audit security-related events, and access to audit data must be limited to authorized administrators.
The operating system must protect itself from external interference or tampering (As examples, modification of a running system or modification of disk files is prevented.)
The NCSC document "Introduction to Certification and Accreditation" discusses how to configure the physical and software computing environment. Certification is the use of the computer system in a specific environment. Accreditation is an evaluation of the certification plan by administrators.
Network Security
Network security evaluations are contained in the "Red Book" of the NCSC.
Network
Isolate the workstation from the network if possible. Preferably use a network entirely contained in a secure building. If network cables are in unsecured areas, use optical fiber cables to prevent wiretaps.
Internet
Do not connect the workstation to the Internet.
FTP
If the workstation is on the Internet, file transfer protocol (FTP) might be available. FTP allows public file access via anonymous log on. There is a user account for anonymous logons (GUEST by default) and a default home directory.
If FTP must be made available, create a user account specifically for FTP and require a password. Do not assign the account to any user groups. Do not allow the account the user right to "Logon on Locally."
As the home directory, assign a separate disk partition, with no secure files or directories.
Remove the NetBios Interface.
Security Administration
System administrators should follow specific rules for effective computer security:
Allow few users to have Administrator privileges. Always log out of the Administrator account when not using the workstation.
Set computer security to the minimum level required to protect resources to minimize setup, maintenance, and security evasions (such as password sharing).
Document backup and all other security procedures to create a security policy.
Always follow the procedures of the security policy.
Monitor security logs regularly and adjust security policies and settings as needed.
Use an up-to-date anti-virus and anti-Trojan Horse program.
Use security mailing lists to be aware of virus attacks.
Check software vendors for recent security fixes.
Always update software with the latest service pack.
Use the Backup utility to back up the registry, files, and directories regularly. Allow Backup privileges only to Administrators.
Set the security features of applications to work with computer security features.
Security administration for a workstation should include physical security, installation, network security, user training, and software security (such as user accounts, object permissions, auditing, and registry keys).
Physical Security
Physical security involves computer and cable location and locking, physical access to the CPU and removable media, power on and rebooting from floppy disk or network, testing of the CPU and peripherals, hard disk set up and maintenance, and surge protection.
Access
Protect the computer workstation from theft. Place the computer in a case that requires a key to open and store the key away from the computer. Attach the computer to a wall or desk with a locked cable. Allow access to the room only to authorized persons. Establish procedures for moving or repairing the computer.
Expose only the computer's keyboard, monitor, mouse, and printer to users. Prevent unauthorized users from touching the power or reset switches, the CPU, and the removable media drives by locking the case or locking the entire CPU in a ventilated enclosure. Access to drives can be limited by using a locked opening.
Booting
Use a workstation with a power-on password to prevent unauthorized personnel from starting another operating system. Set the power-on password using the vendor's instructions, typically by changing the computer's BIOS setup.
Remove the floppy disk drive or disable a floppy-based boot. Also, remove the network card if possible. Allow booting only from the fixed disk.
Edit the boot.ini file so that the boot time-out is 0 seconds, to prevent booting another operating system.
Lock the CPU to physically prevent another operating system from being loaded.
Testing
Test the processor using diagnostic integrity tests.
Test peripherals using the integrity tests of the product.
Hard Disk Maintenance
Make the entire hard disk one file system. Do not use the FAT file system, which has no security features.
Scan and defragment disks regularly to isolate bad sectors and maintain performance.
Surge Protection
Use a surge protector or power conditioner to protect the computer and its peripherals from power spikes.
Installation
Use a password at least nine characters long with some non-alphabetic characters in the first seven characters.
Create an Emergency Repair Disk (ERD) and lock the disk in a secure area (the ERD contains security information).
Set up a special location called the Alternate Data Location, recorded in the Registry.
For Network Protocol, select only TCP/IP.
Use a fixed IP address. Do not use DHCP.
Add the workstation only to a secure domain.
Do not install by disk duplication (which uses the xcopy command).
Do not install any other operating systems on the computer.
After installation, reboot Windows and log on as an Administrator.
Check the Installation Report.
User Training
User training involves use of passwords, proper log on, file protection for copies, data deletion at log off, necessary restarts, proper log off, and use of XXXX file checksums.
Passwords
Users should follow the password rules:
Memorize passwords (never write them down).
Use passwords longer than five characters.
Change passwords frequently.
Never reuse previous passwords.
Never use easily-guessed passwords or words in a dictionary.
Use a combination of letters and numbers.
Log On
Users should always press CTRL+ALT+DEL to log onto Windows, in order to obtain the secure Windows log-on screen. Other logon methods or dialogs risk use of a substitute log-on screen designed to collect account passwords.
File Copies
When a file is copied to a new directory, the file acquires the permissions of files in the new directory. The protections assigned to the document in the old directory are lost.
After copying a file to a new directory, users should set the protections on the file, or alternatively, first move the file to the new directory and then copy the file back to the original directory to reset the protections.
Data Deletion
Users should remove sensitive data from floppy disks or CD-ROM drives before logging off.
Restart
Users should restart the computer before using the tape drive.
Log Off
Users should log off or lock the workstation when not at the computer. Users should set the workstation to lock automatically if not used for a period of time. A 32-bit screen saver with the Password Protected option has this feature.
Checksums
All data files include a checksum value. Compare file checksums to determine if the file has been modified by any other application or any outside process.
Software Security
Software security involves user and group accounts, auditing, file and directory permissions, and registry key settings. Software security protects against accidental or deliberate changes to the data files, the operating system software, and the computer set up and security configuration.
Check the user accounts, security settings, trust relationships, network access points, and the registry regularly. Check for inconsistent permissions of users and objects, user accounts that should be disabled, and unauthorized network connections.
User and Group Accounts
Create users and user groups. Assign users to user groups.
Password and Account Lockout Policies
Set password and account lockout policies for user accounts.
Set the maximum password age to 42 days. Allow the password to change immediately. Set the minimum password length to six (or more). (Make sure that the Permit Blank Password box is not checked.) Set the password uniqueness so that no password history is kept.
Set account lockout to allow only three invalid logon attempts, to reset the count after 60 minutes, and to have a duration of 60 minutes.
User Rights and Auditing Policies
Give each user or user group user rights.
Grant privileges to objects and procedures.
File and Directory Permissions
Control access to files and directories.
Event Auditing
Select auditing options and Audit Policies.
Alerts
Set administrative alerts (electronic mail messages) to System Administrator if any attempt at unauthorized use or other security problem occurs.
Software {digital rights management} (DRM) can prevent copying files.
Applications {rootkit} at root-user level can hide program files, such as copy-protection programs.
Methods {row-level security} can control access to project data based on role assigned to a user by the administrator, because projects and roles are linked. The table privileges granted to a role are removed. A package has a function to make the predicate for the queries. Policies use the predicate-creating function on all statements (SELECT, INSERT, UPDATE, DELETE) on the project tables. Depending on the role assigned to the user and the projects paired with that role, users logging in will only see the protocols or experiments associated with the allowed projects.
Applications can request password, fingerprint, or electronic signature {challenge, computer} {computer challenge}, before allowing access to information or functions.
Users must enter username and/or password {electronic signature} before committing data to database. A field holds a unique code based on user ID and password. Electronic signatures include the user name, date, time, role of signer (review, approval, authorship, or ownership), and digital signature. Digital signatures are generated using biometrics or cryptography.
Saving files is the typical example of an event that requires an electronic signature. Creating an electronic signature displays the role to be applied and requires entry of the user name and password; if multiple signatures are required in one user session, later signatures require only a password. Electronic signatures are only assigned to verified individuals. Electronic signatures cannot be assigned to someone else. Persons with electronic signatures certify that their electronic signatures are to be legally equivalent to handwritten signatures.
Programs {auditing} can record who changed database data, when, and why, as shown in audit logs.
Users have identification and authentication information, plus information about what user can access {keychain}.
Users can have permission to execute specific functions {profile, computer}.
Users do not update system data {static data}, such as instrument locations, entered by administrator at system setup or upgrade.
People {user, computer} can access software or data, after authentication.
Users {root user} can control whole computer.
Users {administrator, computer} {computer administrator} can have access to whole system have privileges to add, remove, or edit all data and manage access control for other users.
Users can access only data in their datagroups {datagroup}.
Users have permission to execute specific functions {role, computer}. Roles control user access to application functions. Interfaces can display available commands and not display unavailable commands.
User groups {security group} can access data types in special ways: read/view, update, create, and/or delete.
Users, such as technicians, administrators, scientists, or guests {user group}, can have same privileges to access data and functions.
Software {operating system}| can allocate CPU resources. Operating systems determine peripheral number and type. They handle input-output operations, manipulate and process files, manage and allocate memory, begin and end jobs, and keep accounting, data-loading, job-priority, error-checking, backup, and recovery records. They put system description {system configuration} in memory. They can execute several programs at once {multiprogramming}, using swapping and executive control. They can allot maximum time {timeslicing} to program before switching to another. Operating systems can have application programs, which perform business or fundamental functions.
The most common operating system {Unix} has many variations. At login prompt, enter username. At password prompt, enter password. To change password: passwd followed by old password, and repeat new password. To log out: logout. To create a directory: mkdir directory-name. To display file: cat filename or more filename. To print file: lpr filename. To list files and directories: ls directory-name or filename. To rename files and directories: mv source-filename destination-filename, or mv source-filename destination-directory, or mv source-directory-name destination-directory-name. To copy files: cp source-filename destination-filename or cp source-filename destination-directory. To delete file or directory: rm filename or rmdir directory-name. To change working directory: cd directory-name.
Pathnames use forward slash. ~ is Home directory. . is working directory. ..is parent of working directory.
wild cards
? is single character wild card. * is arbitrary number of characters.
redirecting
command-name > filename - System types output of command to file rather than screen, replacing current contents of file, if any.
command-name > > filename - System types output of command to file rather than screen, appending to current contents of file, if any.
editing files
vi - enter text editor
search files
grep search-string filename to type lines containing the string in a specific file.
online documentation
To see online Man Pages: man command-name.
Operating-system programs {assembler}| can change programs into assembly-code language.
Operating-system programs {compiler}| can change high-level language program into computer language used by computer hardware, such as binary code.
Operating-system programs {interpreter program} can translate instructions from high-level program to binary code and runs computer program immediately.
Operating-system programs {controller module} can control operations.
Operating-system programs {data management program} can manage data flow.
Operating-system programs {diagnostic program} can diagnose problems.
Operating-system programs {emulator} can represent another computer.
Operating-system programs {executive control program} can control several programs and interfaces.
Operating-system programs {format maker and user} can print or display formatted job output.
Operating-system programs {generator program} {object program} can make object programs from parameters.
Operating-system programs {initial program loader} can start computer system by placing operating system in memory and starting CPU.
Operating-system programs {job scheduler} {job control language} can perform program commands most efficiently.
Operating-system programs {maintenance program} can be for on-line testing.
Operating-system programs {memory dump program} can read memory contents.
Operating-system programs {operator routine} can load programs.
Operating-system programs {simulator} can represent models.
Operating-system programs {sorting device} can organize different memories.
Operating-system programs {utility program} can track or organize computer system and memory.
Operating-system programs {workflow language compiler} can accept and store jobs.
Computers have operations {computer operations}. Programs can run immediately {interactive processing} {on-line processing} {real-time processing}. Programs can execute later, typically at night when CPU usage is low {batch processing, computer} {off-line processing}. On-line transactions take time {response time} {flowtime} {float time} to process [Luce, 1986].
Computer systems can have two or more processors {multiprocessing}. Job-control program decide job types to do and their priority and puts jobs in job queue.
Operating systems can add and remove program parts {swapping}| {memory swapping} from storage devices into memory {virtual memory}, to use only needed program sections. Virtual memory uses either fixed-length pages or logical program segments.
Operations process many characters per second {throughput}|.
Several users can use CPU at once {timesharing}|, because CPU is fast compared to input rates.
Ordered instruction sequences {algorithm}| {recursive procedure} can perform functions in finite numbers of steps. Algorithms start from input data, process data, and make output data. Algorithms use finite numbers of symbols. Computing is algorithm automation and execution.
components
Algorithms use non-algorithmic components, such as containers, container adapters, function objects, and file manipulations. Containers are vectors and matrices. Container adapters are point graphs and edge graphs. Function objects are for sorting, generating random numbers, having properties, and comparing numbers.
input
Input requires redundancy to overcome noise.
output
Performing algorithm gives results {enaction}. Results are in code and have no intrinsic meaning. Result meaning relates to coded input.
processing
Algorithms can be recursive and nested and use feedback and feedforward. The shortest way to predict algorithm results is to run algorithm. The most compressed algorithm description is algorithm itself.
Computable functions can be partial recursive functions {Church's thesis, algorithm} {Church thesis, algorithm} {Turing's thesis}.
Using time-interval midpoints, discrete functions can approximate continuous or non-discrete functions {approximation by discrete function} {discrete function approximation}.
Ideal computers {non-deterministic computer} can choose better at decision points. Real computers {deterministic computer} choose by approximate methods.
Processing {non-linear processing} can describe quantity interactions. Multiplications combine two or more different measurable things to get new thing. Multiplication can reduce data from several quantities to one quantity. For example, gravitational force multiplies two interacting particle masses and then divides by distance between them. Multiplicative effects include division, differentiation, and integration. Differentiation reduces interaction number. Integration increases interaction number.
Analysis algorithms {forward analysis} can use assumptions about node relations to go from one node to another, to avoid costly and time-consuming backtracking.
Analysis algorithms {frame analysis} can use object-class variable, parameter, or property-type lists, with default values. However, such lists do not use "OR" relations well.
For hierarchies or networks, heuristic search methods {alpha-beta technique} {minimax algorithm} repeatedly evaluate nearby situations to check if they are nearer goal situation.
scoring
Alpha-beta technique assigns scores to all evaluated situations {node, hierarchy}. Score determines which nodes to check further.
node
Nodes have immediate-successor nodes. Alpha-beta technique checks beyond current nodes minimum distance and maximum distance {depth, search}. Node scores decide which immediate successors to check further. Alpha-beta technique removes low-scoring nodes {pruning} {alpha-beta pruning} or progressively worse nodes {tapered pruning}.
depth
Alpha-beta is depth first search, rather than width first. Alpha is maximum lower bound and can only increase. Beta is minimum upper bound and can only decrease.
Techniques {generate and test algorithm} for reaching goal situations can produce random or directed trials and check results.
Subtract searched-for message wavelet from possible wavelets to find wavelet that makes zero {Grover's algorithm} {Grover algorithm}. Invert wavelet. Probabilities stay the same. Find average amplitude. Invert wavelets around average amplitude. Searched-for wavelet magnifies amplitude while others reduce. Repeating converges on searched-for wavelet.
For hierarchical networks, searches {search, computer} {computer search} can go first to lower nodes {depth first search}, stay at same level {breadth first search}, or use evaluation function {heuristic search}|. Heuristic search tries to reach goal. It starts from current situation, evaluates nearby situations to short depth to see if goal is closer or farther, chooses only nearby situations that are closer, and then repeats, until exhausting all new nearby situations or finding goal.
evaluation
Evaluation uses scoring methods. Searching requires assigning probabilities. Search eliminates nodes by checking if they have successors, by assigning scores, or by checking for duplicates. Search can minimize risk {minimax, search}. Heuristic search can evaluate search steps to decide whether to go backward or forward {Shannon paradigm}. Search can use other strategies {set-of-support strategy} {unit preference strategy} {linear input form strategy} {ancestry-filtered strategy}.
Techniques {hill climbing}| for reaching goal situation can find path from initial to goal situation, while always maximizing score. Hill climbing locally improves answer until reaching optimum. Hill climbing often stops at solution that is not the best globally, because possible solutions are independent and are in different space locations, with valleys between them. Better hill climbing requires overview to check larger regions.
Techniques {hypothesize and match}| for reaching goal situation can make many examples to compare to true goal {match, search} or make and iteratively test better hypotheses until one matches.
For reaching goal situations, techniques {resolution procedure}| {resolution principle} can check if all formulas are true and check if negative of formula to prove is unsatisfiable, to imply formula. Resolution procedures work if formulas, expressed in predicate calculus, describe situation space. Formulas must allow causality, ability, temporality, recursion formulas, and spatial relations.
Problems can have initial situations, possible situations, actions moving from one situation to another, action relations, and goal situations {situation space}|. Solving problem involves finding path from initial situation to goal situation, while avoiding traps.
Techniques {system inference model} for reaching goal situations can find function or relation between initial situation and goal situation or build relations using examples and counterexamples.
Problems {P problem} can be solvable with polynomials {polynomial time}| {P time}. Time to solve them increases as polynomial-first-term power, as number of items grows. Linear growth has power one: n^1. Quadratic growth has power two: n^2. Cubic growth has power three: n^3.
Polynomial-time problems include whether number is prime or not, if two lists have all members paired, and if all towns on maps have paths to other towns.
exponential
Problems {non-deterministic problem} {NP problem} can grow superpolynomially or exponentially in time, resources, or memory {non-deterministic polynomial time} {NP time}, as number of items grows. NP problems include all P problems.
Konigsburg bridges problem is an NP problem. Superpolynomial problems {subset sum problem} can try to find sets of numbers that add to zero from a large number set. Can a set of boxes fit in a larger box? Do three-color maps have no neighboring countries with same color?
Evaluating proposed solutions to NP problems requires polynomial time.
NP-complete
NP problems {non-deterministic polynomial time complete} {NP-complete} can be the most general. NP-complete problems include all NP problems. Quantum computers cannot solve NP-complete problems in P time, but can solve some NP problems in much faster NP time, by using specific problem features.
People have conflicting demands, so a problem is how to satisfy people {satisfiability}| {satisfiability problem} (SAT). Satisfaction depends on others' choices. Satisfiability problems are NP-complete, because they scale exponentially.
Software machines {finite-state machine} can have a finite number of possible states.
Finite strings can map to finite strings {automata theory}.
symbols
Systems have finite symbol sets, such as 0 or no symbol and 1.
strings
Finite tape has segments, each with one symbol. Segment series make symbol series.
read and write
Tape reader reads one tape segment. Tape writer writes one tape segment. Tape mover moves tape one segment forward or backward.
tape
Tape has input symbols and starts at initial position.
state
Automaton starts in initial internal state. Automaton changes state in response to rules. Controller has a finite number of possible states.
rules
Given current state and symbol, functions {transition function} {next-output function} tell which symbol to write and where, functions {next-state function} tell what next controller state is, and functions {next-move function} tell whether to move tape, read tape, or write on tape.
processing
Controller decides what tape mover, tape writer, and tape reader do at next step, based on symbol reading, controller state, and rules. When automaton stops, original string has become new string.
algorithm
Automatons can represent any computer program or algorithm.
Image files {vector file} {geometric file} can use mathematical formulas that software {object-oriented graphics} {vector graphics} {computer graphics} {graphics} {draw program} manipulates. Vector-graphics images transform easily, look good on higher-resolution displays, and use less memory than bitmaps.
fonts
Scalable fonts {True Type font} {vector font} {scalable font} {object-oriented font} {outline font} use vector graphics.
parameters
Main parameter is geometric-object type, such as rectangle. x, y, and z coordinates locate figure. Width and height are dimensions. Lines have color and size. Fill has color, opacity, orientation, and pattern.
spline
Splines represent lines and can represent boundary lines that divide surfaces into polygons.
surfaces
Closed surfaces can be polygons, such as triangles. Surfaces can be parallel lines or grids.
volumes
Splines and generalized ellipses or ellipsoids can represent volumes.
formulas
Vector graphics uses formulas for points, lines, splines, polygons, circles, ellipses, Bézier curves, Bézier splines {bezigon}, text in Bézier curve fonts, Catmull-Rom splines, NURBS, and rectangle bitmaps. For example, circle information includes radius, center point, line style, line color, fill style, and fill color. Formulas can combine.
formulas: transformations
Most formulas allow transformations, such as rotation, translation, reflection, scaling, stretching, and skewing. Programs can perform logical and set operations. Programs can also add surface-texture bitmaps, add shading, and smooth irregularities.
bit map
Images can be pixel arrays {bit map} {raster file} that software {raster graphics} manipulates. Programs {paint program} can make bit maps smaller or larger, but enlarged images have blank or repeated areas. Vector graphics convert to raster graphics for dot-matrix printers, laser printers, and display monitors, but not plotters.
Computer-graphics algorithms {de Casteljau's algorithm} {Farin-Boehm algorithm} can evaluate parametric curves {Bézier curve} or surfaces {Bézier surface}. Linear, quadratic, and cubic Bézier-curve {Bézier polygon} splines can draw any shape.
history
Paul de Casteljau invented de Casteljau's algorithm [1959]. Pierre Bézier of France designed automobiles [1962].
equations
Lines can use two points P0 and P1 {control points} and have equation f(t) = (1 - t) * P0 + t * P1, where 0 <= t <= 1. Quadratics can start at P0, go toward P1, and end at P3: f(t) = (1 - t)^2 * P0 + 2 * t * (1 - t) * P1 + t^2 * P2, where 0 <= t <= 1. Cubics can start at P0, go toward first P1 then P2, and end at P3. f(t) = (1 - t)^3 * P0 + 3 * t * (1 - t)^2 * P1 + 3 * t^2 * (1 - t) * P2 + t^3 * P3, where 0 <= t <= 1.
interface
Drawing programs display control points, which control lines.
Real functions can have domain-value sets {level set} {fiber, set} that make function constant. Real-equation roots are level sets. For two-dimensional domains f(x,y), level sets are curves {implicit curve} {isocontour}. For three-dimensional domains f(x,y,z), level sets are surfaces {implicit surface} {isosurface}.
function
Functions are positive inside surface, zero on surface, and negative outside surface. At points, function gradient is perpendicular to level-set surface.
shape
Closed planar curves can be isocontours. Closed surfaces can be isosurfaces. Shape boundaries are level sets. Shapes have real-function positive values. As object changes, level-set function translates by non-parametric methods {level set method} {Eulerian approach} (Stanley Osher and James Sethian) [1988].
Computers can test all rays entering screen to see where they land on object-indexed kd-tree scene {ray tracing} {ray processing unit} (RPU). Ray tracing can check for shadows, reflection, refraction, and color.
Rasterization software renders three-dimensional scenes for two-dimensional screens {graphical processing unit} (GPU). GPU first makes scene into independent plane polygons, typically triangles. It must find which ones are closer {z-buffer}. Because light reflects from objects onto other objects {global illumination}, GPU must later add indirect light.
Steps in making computer programs {computer programming} {programming, computer} are defining problem, creating algorithm to solve problem, making flowchart to see how to implement algorithm conceptually, writing program using language and following flowchart, and checking program for errors.
Computers can process problem-solving algorithms {computer program}. Computer programs are explicit formal processes to generate output from input and internal settings. Programs have instruction sequences.
types
User programs perform arithmetic calculations, word processing, or spreadsheet manipulations. Utility programs perform functions about files and directories. Environmental programs work in background to perform accounting, memory-utilization, and scheduling functions.
making
Set goals or requirements. Develop functions to achieve goals. Design how to implement functions. Implement actual code.
module
Programs can have small independent programs {module, program}, to reach intermediate goals.
errors
Languages have special commands or techniques for error or exception handling, which replace IF ... THEN ... statements, prevent crashes, give needed information about errors or warnings, and provide logging information.
process
Code development follows standard process, uses standard methodology, and has life cycle. Requirements state involved units and required deliverables. Flow charts, such UML diagrams, show workflows, inputs, outputs, and use cases.
Programs have subunits {program structure}, such as declarations, executable units, loops, functions, subroutines, procedures, and recursive or reentrant subunits. Program have data types, such as arithmetic, Boolean, alphanumeric, formal or algebraic, string, list, vector, array, or hierarchical. Program statements assign variables or values, handle alphanumeric data, control sequences, make decisions, input, output, debug, store, and operate on system statements.
Programs can use addresses {descriptor, computing} to locate program segments or data blocks {addressing}. Descriptors contain addresses pointing to program-segment or data-block locations, word counts indicating program-segment or data-block sizes, and descriptor-sequence descriptor bits {presence-bit}.
Sets {collection} can have same-type objects {homogeneous collection} or different types {heterogeneous collection}.
Checking {debugging}| programs for errors follows programming.
Stored value arrays {decision table} {lookup memory} can allow result look-up for already-performed calculations, rather than performing calculations.
Processing operations {instruction, computing} need two steps. First, get instruction from storage and put it in instruction register. Then get data from address and put it in data register. Instructions can specify many addresses, including next instruction address. CPU has 30 basic instructions.
stack
Instead of using addresses, instructions {zero-address instruction} can specify stack, stack dictionary level, and dictionary-level index value {address couple}.
program
Instructions are elementary switches or gates {microfunction} and so are small programs {microprogram}.
Existing functions can be open for extension to new requirements but closed for modifications affecting published interfaces {open-closed principle}.
Operations {operations, program} on input values give output values. Operations include all arithmetical operations. Operations {let command} {set command} can calculate function value. Operations {if ... then ... commands} {conditional command} can check statement truth and perform actions. Operations {for ... next commands} {loop command} can repeat instruction sets over index-value ranges. Operations {goto command} {subroutine} can jump to another instruction block.
Statements can have operators and operands in correct sequence to execute them {Polish notation}, requiring no addressing, storage, or retrieval.
Program variables can be infinite value sets {set-based analysis} (SBA), so program ignores variable dependencies but considers all data and data structures.
Alphabetical operations {string operation} can extract sequence {string, text} parts {substring}. String operations can find string location {index, string} in another string. String operations can partition string to make array.
Logical-step series {workflow}| start from input and use processes and decisions to reach output, typically using branching paths.
High-level function-organization description {software architecture} {system architecture} defines system.
Components include applications, technical services, integration services, business services, and data services {computer system}.
Architectures {Common Object Request Broker Architecture} can have object-oriented ways to handle data between clients and servers, using Interface Definition Language (IDL) and Internet Inter-ORB Protocol (CORBA).
execution environment {envelope, computing}.
Models {implementation model} can describe function logical and physical representation.
Modules can have use in several programs {overlaying}.
User-interface sections {punch-out} can be for multiple applications.
Method invocations {Remote Method Invocations} (RMI) can use Java data model.
Related reusable class sets {toolkit} provide general functions.
Integrated project stages, methods, and principles {unified process} develop and maintain software.
Objects {value object} transfer data between presentation and domain layers.
Tools {software design tools} can check high-level design models {model checking}, using automated reasoning on structure language, to prove algorithms have no counterexamples or contradictions. Integrated-circuit design uses model checking. Systems have object operations, mappings, and relations, with assertions. Design-checkers try to find cases in which assertions are not true, so designers can exclude those cases.
Designs {contract-based design} can specify contracts between user and service provider. If user provides requisites {pre-conditions}, then service provider guarantees service will perform functions and give results {post-conditions}.
Starting with requirements, specifying functions and designing objects {responsibility-driven design} can meet requirements.
Designs {top-down design} can use modules, which contain submodules, which contain sub-submodules, and so on.
Abstract-class sets {framework} can work together in reusable designs.
Frameworks {request-response framework} can be integration services that send service requests to technical services, applications, and business-model instances and receive responses. Service-request {request, computer} execution environment can include required input. Service-response {response, computer} execution environment can include output.
Frameworks {services framework} can define and specify service uses.
System components {software layers} can be for applications, technical services, integration services, business services, and data services.
Software layers {application layer} can include installers and user interfaces and use business and technical services, through integration services. Interfaces are for navigating, querying, calculating, displaying, and reporting.
Software layers {business layer} can include instrument controls, analysis tools, quality-control modules, parameter settings, queries, and business objects. Models {business model} can be business-object content, behavior, rules, and interactions. Data objects {business object} are in systems. Service groups {business service} access and control shared domain-specific service interfaces, such as instrument controls and data.
Software layers {data layer} can include auditing, ID, password, authentication, persistence, and relational database. Implementation-model subset {data model} describes persistent procedure, trigger, and constraint logical and physical data representation.
Software layers {domain layer} can contain modules working with data objects. Business-model subsets {domain model} can have business types.
Software layers {integration layer} can include request-response, instrument, workflow, directory, and messaging services. A service group {integration service} includes request-response framework, architectural framework, and services that access and control shared services.
Software layers {presentation layer} can contain user interfaces.
Querying, versioning, or persisting data {system service} {software services} happens upon request for service or system function. Software components {service provider} provide service functions, such as for instrument runtime or messaging. System-architecture primary services allow other-service development.
Java class and component-library APIs {Java Database Connectivity} (JDBC) can allow Java applications to communicate with database server, outside database software.
Services {Java Message Service} (JMS) can publish and listen for messages.
Java extensions {Java Naming and Directory Interface} (JNDI) can provide API for accessing directory and naming services, such as LDAP, Novell Netware NDS, CORBA Naming Service, and naming services provided by EJB servers. EJB servers organize beans into directory structure and provide JNDI driver service provider for accessing directory structure.
JNDI database {naming service} contains named objects, with no attributes.
Infrastructure services {technical service} can be for applications and business services: logging, security, exceptions, and system management.
Computer instructions have exactly defined and limited vocabulary, syntax, and grammar {formal language, programming} {programming language}| {computer language}, with no ambiguities or connotations.
parts
Programming languages have alphabet {character set} that makes numbers and words in formats. They have mathematical functions, logical operations, and string manipulations {operator, programming}. They have processing instructions {executable}. They have sentences {declaration, programming} {non-executable declaration} that name, set up arrays, or create symbols.
levels
Machine uses machine-dependent binary code {machine language}. Assembler uses machine-dependent three-letter codes {assembly language} for instructions and addresses and has one statement for each instruction. People use higher-level languages {compiler language} {high-level language}, with one statement for several instructions, such as BASIC, FORTRAN, COBOL, UNIX, and DOS.
early procedural computer language {ALGOL language}.
Simple basic-function languages {BASIC language} can be for interactive use.
early procedural computer language {COBOL language}.
Computer languages {Java language} can be object oriented. Java has classes with methods. A main static method may be first. Methods use "get" and "put" for getting and setting values, "is" or "has" for boolean test functions, and action verbs for methods that change state or take action in other ways. Methods should proceed from public to protected to private. Within each group, methods should start with constructors, then instance methods, then static methods. Java has local and global class member instance variables and static member variables. Java has constants. Create output using System.out.println. The entire system has to be layered and buildable in a single pass. A script defines the order in which the packages are built. Java 2 Enterprise Edition (J2EE) defines application servers for Enterprise Java Beans (EJB), Servlets, and Java Server Pages (JSP), to make web-enabled applications.
Interactive computer languages {LISP language} can be for symbol manipulation. Symbols can be numbers, words {atom, LISP}, or groups {list, LISP}. Data and operations are both lists {list structure}. Programs use, modify, and recognize lists. List addresses contain two pointers, one to current list value and other to next list item. LISP can perform all string operations and compare lists and operations. Lists can have any number of dimensions.
Relational database queries use a language {SQL language} {Structured Query Language}. Make variable names no more than 31 characters. Declare cursors explicitly. Primary cursors remain open. Secondary cursors close after fetching all rows.
table
In a database, each data structure is a table, with columns and rows. The rows are records, a set of information about one item, and the columns are each attributes of the item.
datatype
Each column has entries all in one datatype. The datatypes are integer, floating point number, fixed length field of n characters, variable length field of characters, bit, binary fixed length field of n characters, money, and date and time. A "null" entry means an unknown entry, not blank or zero.
queries
select column, column, ... from table - retrieves data from columns in the table and displays in the order specified.
select column from table where phrase - phrase sets conditions for selection. The phrase may use symbols such as =, >, <, >=, <=, !=, !>, and !< and may use connectors such as and, or, not, between m and n, is null, is not null, in ( ... ), not in ( ... ), and LIKE ' '. The symbols that can be used in LIKE are % for any string of 0 or more characters, _ for anyone character, [ ] for any single character in a range or set, [^] for any single character not in a range or set.
function
select function from table - runs a function, such as "getdate ()".
order
select column from table order by column - sorts in ascending order.
select column from table order by column desc - sorts in descending order.
group
select column from table group by column, column, ... - makes nested groups.
select column from table group by column having phrase - phrase sets conditions for grouping.
operator
select operator(column) - operators check numbers of entries: count(column), max(column), min(column), sum(column), avg(column).
insert
insert table (column, column, ... ) (column-1-name datatype, ...) values ('x', 'y') - inserts rows into table at the columns specified using the values in order.
update
update table set column, column, ... from table where phrase - modifies one table by updating its rows.
delete
delete table from table where phrase - deletes rows from table.
Exception
EXCEPTION traps errors. Some named exceptions are ZERO_DIVIDE, NO_DATA_FOUND, TOO_MANY_ROWS, VALUE_ERROR, OTHERS (for all errors). For example, EXCEPTION WHEN ZERO_DIVIDE THEN RESULT1 = NULL;. It has no continue.
Use all function arguments. Be able to access all code {code access}.
Add comments {code comments} for logical units. Add comments for modifications. Add inline comment after final brace to identify original brace.
Use IF-THEN-ELSE {conditional statement, software}, rather than multiple IFs. Use compound IFs, rather than nested IFs. Use braces for nested IF blocks. Always use ELSE after ELSE IF. Enter NULL statement ";" in IF block with no action. Use Switch statements, rather than IF-THEN-ELSE, if possible. Use default Switch at end, containing at least break statement.
Use symbolic constants {constant, software}, with no hard-coded numbers.
Do not use mixed data types {data type} in expressions. Do not use machine-dependent data representations.
Use dynamic memory {dynamic memory, computer}, rather than allocating fixed storage. Verify that memory gave information. Free all memory structures no longer used. Allocate memory to structures to keep before structures to free, to avoid memory leaks.
Use parameters for error messages {error message} and error numbers, not many hard-coded messages.
Put file name, author, creation date, description, purpose, and modification history in file header {file header, information}.
Put function name, author, creation date, short description, usage, possible return codes, and modification history in function header {function header}.
Return success or failure status {function return} {return, function} to caller. Check status in caller. Store function-return codes in caller for future reference. Do not test function logical value directly. Declare return "void" for functions that do not return value. Declare argument list "void" for functions that do not use parameters.
Do not use GOTO statements {GOTO command}.
Put definitions, global-variable declarations, and function prototypes in header files {header file}. Use "include" statements. For static functions used by one module, put prototype at module top.
Check input values {input, software} for range and reasonableness.
Do not reinitialize index variables in loops {looping, software}. Do not use non-loop-dependent statements in loop bodies.
Put modules in separate files {module files}. Put source code for C++ classes in .CXX files. Put class definitions in .HXX files. Use only logically related functions. Use one entry and exit point for each function. Exit program only through "main" command.
Make object names {object names, software} descriptive and globally unique. Use suffix for object types, like libraries. For functions, use lowercase or mixed case. For variables, use lowercase or mixed case. For constants, use uppercase.
Minimize operating-system services {operating system services}. Put operating-system services in "system" library, not in high-level code.
Separate variables and operators {readability, software}. Write one statement per line, using consistent indentation for logical structure. Place lead brace on same line as statement, or place on next line in same column as statement beginning. Put end brace in same column as statement beginning. Indicate conditional statement using inline comment after end brace.
Use only standard programming language {standard usage, software}.
Use one line for each variable declaration {variable declaration}. Minimize number of global variables and external variables by passing arguments by value or reference. Declare arrays and do not use pointers except for dynamically allocated memory. Use structures for related data elements, to treat them as single objects.
Do not exit from WHILE-statement body {WHILE command}.
Only methods can access objects {encapsulation, programming}.
You can make a child class with all the members and methods of a parent class, and then add extra members and methods {inheritance, programming}.
If classes share common methods, the same methods can apply to all the classes {polymorphism, programming}.
You can use a child-class instance if you can use a parent-class instance {Liskov Substitution Principle}.
Programs can be procedure-oriented, non-procedural, problem-oriented, application-oriented, special purpose, problem defining, problem describing, or problem solving {programming types}.
Programming {functional programming} can change input to output by performing logical relations on input. Sequence and location are not important, because input calls functions, not registers.
Programming {procedural programming} can perform actions on register states to get new register states. Actions must be in exact sequence at one location. Modules are command sets that perform one process or procedure {process box}, such as moving values, performing logical AND, executing if-then-else statement, or iterating through do-while or perform-until statement. Modules can be scripts. BASIC depends on procedures or scripts and is useful for small systems and rapid development.
Software can start with objects and find arrangements that satisfy rule {satisfiability solver} (SAT), in reasonable time.
Programming {structured programming} can use independent modules. Programming languages can use objects {object-oriented programming} {component architecture}, rather than procedures. SVL and Perl have both objects and procedures. C++ and Java are almost all object-oriented, can code larger systems, and can require more development time. Rather than procedures, structured programming languages, such as Java, use independent modules {class} about data types (abstract objects) more complex than basic data types such as integers, floating-point numbers, strings, dates, and arrays. Class groups {Java package} are about one system part, such as file control, database, output, input, or flow control. Software systems are package groups.
Objects model data structures such as windows, files, tables, databases, database query results, and images. Data structures have parameters and constant and/or variable properties.
Classes have procedures {methods} about data structures:
Make {constructor} a specific instance of an abstract object with specific property values.
Make an instance {instance method} of an object with a procedure and a returned value.
Open and close windows.
Open file, write to file, read from file, and close file.
Get table-cell value and set table-cell value.
Change object state or property.
Indicate if statement about object state or property is true or false.
Methods can have parameters and return result values. A main static method starts the program and has a procedure that calls objects.
Methods, classes, and packages can call methods, classes, and packages. Classes and packages can share global constants and variables and can modify global variables.
variables
Programs can use global variables in different ways, or different functions can modify global variables {coupling, Java}. Constants can be global.
unique
Functions, methods, classes, and packages have only one copy, called by other functions, methods, classes, or packages.
comments
Packages, classes, functions, and variables can have comments.
format
Commands at same level indent, typically four spaces, to same position. Line lengths are less than 80 characters. Open braces are at line ends, with their close braces on one separate line lined up with opening-line first character {Microsoft style}.
naming
Object names typically have capitalized syllables or words, as in ElecModelWrapper. High-level objects are nouns, as in ElecModelWrapper. Action names start with verbs, as in writeThisFile. Queries start with "get", as in getString. Information collection starts with "put", as in putString. True or false indicators, with boolean datatype, start with "is", as in isConnected. Names about same thing start the same, as in SysProps and SysVars. Typical prefixes are c for constants, g for globals, m for member variables, s for statics, v for variables, and p for parameters. Names are longer than two characters and use letters rather than numbers.
Put sounds in intervals, measure energies, identify words, and parse sentences to recognize speech {speech recognition}. Segment acoustic waveform into ten-millisecond intervals {segment, sound} {sound segment}.
energy
In intervals, measure several frequency-band energies from 200 Hertz to 6000 Hertz. Linear predictive coding coefficients, zero-crossing rates, glottal frequency, and total energy are measures.
word
Energy sustained over several intervals indicates word. Interval number is word duration. Compressing longer words and elongating shorter words can standardize word duration.
pause
Low energy in one or more intervals indicates pause between words.
identification
Compare word frequency-band energy spectrum to stored word templates to identify word.
parsing
Use word syntactic and semantic information to parse sentence.
Systems {language understanding system} can detect strings using features and then classify strings and substrings by syntax.
Outline of Knowledge Database Home Page
Description of Outline of Knowledge Database
Date Modified: 2022.0225